using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace DataModels.Models
{
    [Table("ANCFormMetadata")]
    public partial class ANCFormMetadata
    {
        public ANCFormMetadata()
        {
            this.ANCForms = new List<ANCForm>();
            this.ANCForm_HudhurioLaKwanza = new List<ANCForm_HudhurioLaKwanza>();
            this.ANCForm_Malaria = new List<ANCForm_Malaria>();
            this.ANCForm_PMTCT = new List<ANCForm_PMTCT>();
            this.ANCForm_VidokezoVyaHatari = new List<ANCForm_VidokezoVyaHatari>();

            this.LDForms = new List<LDForm>();
            this.LDForm_TaarifaYaWaliojifungua = new List<LDForm_TaarifaYaWaliojifungua>();
            this.LDForm_NjiaYaKujifungua = new List<LDForm_NjiaYaKujifungua>();
            this.LDForm_MatatizoKablaYaKujifungua = new List<LDForm_MatatizoKablaYaKujifungua>();
            this.LDForm_MatatizoBaadaYaKujifungua = new List<LDForm_MatatizoBaadaYaKujifungua>();
            this.LDForm_EmOC = new List<LDForm_EmOC>();
            this.LDForm_PMTCT = new List<LDForm_PMTCT>();
            this.LDForm_WatotoWaliozaliwaMmoja = new List<LDForm_WatotoWaliozaliwaMmoja>();
            this.LDForm_WatotoWaliozaliwaMapacha = new List<LDForm_WatotoWaliozaliwaMapacha>();
            this.LDForm_WatotoWaliosaidiwaKupumua = new List<LDForm_WatotoWaliosaidiwaKupumua>();
        }

        [Key]
        public int Id { get; set; }

        public int InputMethodId { get; set; }
        
        public System.DateTime TimeReceived { get; set; }

        [StringLength(255)]
        public string Sender { get; set; }

        [StringLength(50)]
        public string SenderPhoneNumber { get; set; }

        [StringLength(1000)]
        public string TextMessage { get; set; }

        [StringLength(1000)]
        public string MoreInformation { get; set; }

        [ForeignKey("InputMethodId")]
        public virtual DataInputMethod DataInputMethod { get; set; }
        public Nullable<int> PreviousReportId { get; set; }
        
        public virtual List<ANCForm> ANCForms { get; set; }
        public virtual List<ANCForm_HudhurioLaKwanza> ANCForm_HudhurioLaKwanza { get; set; }
        public virtual List<ANCForm_Malaria> ANCForm_Malaria { get; set; }
        public virtual List<ANCForm_PMTCT> ANCForm_PMTCT { get; set; }
        public virtual List<ANCForm_VidokezoVyaHatari> ANCForm_VidokezoVyaHatari { get; set; }

        public virtual List<LDForm> LDForms { get; set; }
        public virtual List<LDForm_TaarifaYaWaliojifungua> LDForm_TaarifaYaWaliojifungua { get; set; }
        public virtual List<LDForm_NjiaYaKujifungua> LDForm_NjiaYaKujifungua { get; set; }
        public virtual List<LDForm_MatatizoKablaYaKujifungua> LDForm_MatatizoKablaYaKujifungua { get; set; }
        public virtual List<LDForm_MatatizoBaadaYaKujifungua> LDForm_MatatizoBaadaYaKujifungua { get; set; }
        public virtual List<LDForm_EmOC> LDForm_EmOC { get; set; }
        public virtual List<LDForm_PMTCT> LDForm_PMTCT { get; set; }
        public virtual List<LDForm_WatotoWaliozaliwaMmoja> LDForm_WatotoWaliozaliwaMmoja { get; set; }
        public virtual List<LDForm_WatotoWaliozaliwaMapacha> LDForm_WatotoWaliozaliwaMapacha { get; set; }
        public virtual List<LDForm_WatotoWaliosaidiwaKupumua> LDForm_WatotoWaliosaidiwaKupumua { get; set; }

    }
}
